package cn.shengchao.examstar.ai.domain.model.studyplan;

import lombok.Getter;

import java.util.Objects;

/**
 * 学习计划ID值对象
 * 封装学习计划的唯一标识
 */
@Getter
public class StudyPlanId {
    
    private final Long value;
    
    private StudyPlanId(Long value) {
        if (value == null || value <= 0) {
            throw new IllegalArgumentException("学习计划ID必须为正数");
        }
        this.value = value;
    }
    
    /**
     * 创建学习计划ID
     */
    public static StudyPlanId of(Long value) {
        return new StudyPlanId(value);
    }
    
    /**
     * 生成新的学习计划ID（用于新创建的学习计划）
     */
    public static StudyPlanId generate() {
        // 在实际实现中，这里可能需要依赖ID生成器
        // 暂时返回null，由持久化层生成
        return null;
    }
    
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        StudyPlanId that = (StudyPlanId) o;
        return Objects.equals(value, that.value);
    }
    
    @Override
    public int hashCode() {
        return Objects.hash(value);
    }
    
    @Override
    public String toString() {
        return "StudyPlanId{" +
                "value=" + value +
                '}';
    }
}